package com.tutu.controller.activity;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


import com.hyphenate.EMCallBack;
import com.hyphenate.chat.EMClient;
import com.tutu.R;
import com.tutu.constant.LoginConst;
import com.tutu.model.Model;
import com.tutu.model.bean.UserInfo;

/**
 * @author  图图  2020/9/29
 *
 * 登录页面
 */
public class LoginActivity extends Activity {

    // 用户名
    private EditText et_login_username;

    // 密码
    private EditText et_login_userpassword;

    // 注册按钮
    private Button bt_login_regist;

    // 登录按钮
    private Button bt_login_login;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // 初始化控件
        initView();

        // 初始化控件监听业务
        initListener();
    }


    private void initView(){
        et_login_username = (EditText)findViewById(R.id.et_login_username);
        et_login_userpassword = (EditText)findViewById(R.id.et_login_userpassword);
        bt_login_regist = (Button) findViewById(R.id.bt_login_regist);
        bt_login_login  = (Button) findViewById(R.id.bt_login_login);
    }

    private void initListener(){

        // 注册按钮点击事件处理
        bt_login_regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                regist();
            }
        });

        // 登录按钮点击事件处理
        bt_login_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                login();
            }
        });

    }


    /**
     * 注册业务逻辑
     */
    private void regist(){
        // 页面跳转
        openNewPage(LoginActivity.this,RegistActivity.class);
    }

    /**
     * 登录业务逻辑
     */
    private  void login(){
        // 1.获取用户名密码
        String loginName = et_login_username.getText().toString();
        String loginPwd = et_login_userpassword.getText().toString();
        // 2.校验用户名密码
        if(TextUtils.isEmpty(loginName)){
            Toast.makeText(LoginActivity.this, LoginConst.USERNAME_IS_NULL,Toast.LENGTH_SHORT).show();
            return;
        }
        if(TextUtils.isEmpty(loginPwd)){
            Toast.makeText(LoginActivity.this, LoginConst.USERPWD_IS_NULL,Toast.LENGTH_SHORT).show();
            return;
        }
        // 3.登录逻辑
        Model.getInstance().getGlobalThreadPool().execute(new Runnable() {
            @Override
            public void run() {
                // 去环信服务器登录
                EMClient.getInstance().login(loginName, loginPwd, new EMCallBack() {
                    /**
                     * 登录成功处理
                     */
                    @Override
                    public void onSuccess() {
                        // 模型层对数据的处理
                        Model.getInstance().loginSuccess(new UserInfo(loginName));

                        // 保存用户信息到本地数据库
                        UserInfo userInfo = new UserInfo();
                        userInfo.setHxid(loginName);
                        userInfo.setUsername(loginName);
                        userInfo.setUserpwd(loginPwd);
                        Model.getInstance().getUserAccountDao().addAccount(userInfo);


                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                // 提示登录成功
                                Toast.makeText(LoginActivity.this, LoginConst.SUCCESS,Toast.LENGTH_SHORT).show();
                                // 跳转到主页面
                                openNewPage(LoginActivity.this,MainActivity.class);
                            }
                        });
                    }

                    /**
                     * 登录失败处理
                     * @param i
                     * @param s
                     */
                    @Override
                    public void onError(int i,final String s) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                // 提示登录失败
                                Toast.makeText(LoginActivity.this, LoginConst.ERROR + ":" + s,Toast.LENGTH_SHORT).show();
                                return;
                            }
                        });
                    }

                    /**
                     * 登录中处理
                     * @param i
                     * @param s
                     */
                    @Override
                    public void onProgress(int i, String s) {

                    }
                });
            }
        });
    }


    /**
     * 跳转
     * @param packageContext
     * @param cls
     */
    private void  openNewPage(Context packageContext, Class<?> cls){
        // 页面跳转
        Intent intent =  new Intent(packageContext,cls);
        // 启动跳转
        startActivity(intent);
        // 结束当前页
        finish();
    }

}
